﻿2026-05-16T03:19:23.8359510Z ##[group]Run pnpm --filter @rebno/client test:e2e
2026-05-16T03:19:23.8360180Z [36;1mpnpm --filter @rebno/client test:e2e[0m
2026-05-16T03:19:23.8413843Z shell: /usr/bin/bash -e {0}
2026-05-16T03:19:23.8414321Z env:
2026-05-16T03:19:23.8414723Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-16T03:19:23.8415393Z   STAGING_URL: https://staging.rebno.decidel.com
2026-05-16T03:19:23.8416378Z   STAGING_INVITE_TOKEN: ***
2026-05-16T03:19:23.8416819Z   UAT_ACCOUNT_A: ***
2026-05-16T03:19:23.8417253Z   UAT_PASSWORD_A: ***
2026-05-16T03:19:23.8417615Z   UAT_ACCOUNT_B: ***
2026-05-16T03:19:23.8418032Z   UAT_PASSWORD_B: ***
2026-05-16T03:19:23.8418371Z ##[endgroup]
2026-05-16T03:19:24.1514963Z 
2026-05-16T03:19:24.1516227Z > @rebno/client@0.1.0 test:e2e /home/runner/work/rebno/rebno/apps/client
2026-05-16T03:19:24.1517187Z > playwright test
2026-05-16T03:19:24.1517694Z 
2026-05-16T03:19:25.6624743Z 
2026-05-16T03:19:25.6625822Z Running 37 tests using 1 worker
2026-05-16T03:19:25.6626472Z 
2026-05-16T03:19:54.8482029Z   ✘   1 [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) (27.7s)
2026-05-16T03:20:06.3941716Z   ✘   2 [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) (retry #1) (10.2s)
2026-05-16T03:20:23.8815822Z   ✘   3 [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) (15.2s)
2026-05-16T03:20:40.7955983Z   ✘   4 [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) (retry #1) (14.8s)
2026-05-16T03:20:51.2646562Z   ✘   5 [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) (9.2s)
2026-05-16T03:20:59.9000821Z   ✘   6 [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) (retry #1) (7.4s)
2026-05-16T03:21:09.0985388Z   ✓   7 [chromium] › test/e2e/cli-08-collision-boundary.spec.ts:132:3 › derived collision_polys block south wall (D-62 anti-revert) (8.4s)
2026-05-16T03:21:27.3760157Z   ✘   8 [chromium] › test/e2e/cli-08-collision-boundary.spec.ts:132:3 › derived collision_polys block north wall (D-62 anti-revert) (18.0s)
2026-05-16T03:21:38.0075851Z   ✓   9 [chromium] › test/e2e/cli-08-collision-boundary.spec.ts:132:3 › derived collision_polys block north wall (D-62 anti-revert) (retry #1) (9.8s)
2026-05-16T03:21:47.6621145Z   ✓  10 [chromium] › test/e2e/cli-08-collision-boundary.spec.ts:132:3 › derived collision_polys block west wall (D-62 anti-revert) (9.6s)
2026-05-16T03:21:56.2090810Z   ✓  11 [chromium] › test/e2e/cli-08-collision-boundary.spec.ts:132:3 › derived collision_polys block east wall (D-62 anti-revert) (8.5s)
2026-05-16T03:22:20.3430116Z   ✘  12 [chromium] › test/e2e/cli-08-direction-convergence.spec.ts:70:1 › CLI-08 D-58c — dual-tab direction convergence (REQ-SRV-03 server-authoritative) (23.3s)
2026-05-16T03:22:38.8824443Z   ✘  13 [chromium] › test/e2e/cli-08-direction-convergence.spec.ts:70:1 › CLI-08 D-58c — dual-tab direction convergence (REQ-SRV-03 server-authoritative) (retry #1) (16.7s)
2026-05-16T03:23:06.1967896Z   ✘  14 [chromium] › test/e2e/cli-08-dup-login.e2e.test.ts:11:3 › D-51 dup-login eviction › second session evicts first; second tab reaches GameScene, first tab reaches LoginScene (25.9s)
2026-05-16T03:23:36.0505951Z   ✘  15 [chromium] › test/e2e/cli-08-dup-login.e2e.test.ts:11:3 › D-51 dup-login eviction › second session evicts first; second tab reaches GameScene, first tab reaches LoginScene (retry #1) (28.4s)
2026-05-16T03:23:46.3465421Z   ✓  16 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block south wall (9.5s)
2026-05-16T03:23:54.9585265Z   ✓  17 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block north wall (8.6s)
2026-05-16T03:24:03.9865456Z   ✓  18 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block west wall (9.0s)
2026-05-16T03:24:22.3060588Z   ✘  19 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block east wall (18.0s)
2026-05-16T03:24:31.4719792Z   ✓  20 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block east wall (retry #1) (8.3s)
2026-05-16T03:24:48.0218058Z   ✘  21 [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) (15.3s)
2026-05-16T03:25:06.1959474Z   ✘  22 [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) (retry #1) (16.0s)
2026-05-16T03:25:12.8061512Z   ✓  23 [chromium] › test/e2e/cli-08-nameplate-offset.e2e.test.ts:30:1 › nameplate sits above sprite top (D-45) (5.8s)
2026-05-16T03:26:00.6876229Z   ✓  24 [chromium] › test/e2e/cli-08-nameplate-stable.spec.ts:37:3 › CLI-08 D-45d nameplate stability under remote motion › constant-vx walk-right: nameplate_y flip count over 30s ≤ ceiling (Plan 06.4-12 D-45d gate) (47.8s)
2026-05-16T03:26:47.0681689Z   ✓  25 [chromium] › test/e2e/cli-08-nameplate-stable.spec.ts:125:3 › CLI-08 D-45d nameplate stability under remote motion › constant-vx walk-left (KeyA): symmetric stability — flips ≤ ceiling (locks symmetric fix) (46.3s)
2026-05-16T03:27:01.2432913Z   ✓  26 [chromium] › test/e2e/cli-08-nameplate.e2e.test.ts:24:1 › CLI-08 nameplate color — local cyan (#00FFFF), remote white (#FFFFFF) (Wave 4 GREEN gate) (14.1s)
2026-05-16T03:27:09.7468601Z   ✘  27 [chromium] › test/e2e/cli-08-resume-render.spec.ts:30:1 › cli-08-resume-render — CLI-08 resume render — Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works (8.1s)
2026-05-16T03:27:29.0616844Z   ✘  28 [chromium] › test/e2e/cli-08-resume-render.spec.ts:30:1 › cli-08-resume-render — CLI-08 resume render — Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works (retry #1) (18.2s)
2026-05-16T03:27:45.5799955Z   ✘  29 [chromium] › test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:60:1 › CLI-08 D-55d — B joins after A: B sees A in Stand* (no TeleIn anim for pre-existing remote) (15.0s)
2026-05-16T03:28:13.9154016Z   ✘  30 [chromium] › test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:60:1 › CLI-08 D-55d — B joins after A: B sees A in Stand* (no TeleIn anim for pre-existing remote) (retry #1) (26.5s)
2026-05-16T03:28:29.5961245Z   ✘  31 [chromium] › test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:138:1 › CLI-08 D-55d — A joined first: A DOES see TeleIn anim when B joins during session (gating preserves new-join semantics) (14.2s)
2026-05-16T03:28:58.2079543Z   ✘  32 [chromium] › test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:138:1 › CLI-08 D-55d — A joined first: A DOES see TeleIn anim when B joins during session (gating preserves new-join semantics) (retry #1) (26.8s)
2026-05-16T03:29:21.4065729Z   ✘  33 [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) (20.9s)
2026-05-16T03:29:44.8160899Z   ✘  34 [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) (retry #1) (21.1s)
2026-05-16T03:30:03.8559328Z   ✘  35 [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace (17.1s)
2026-05-16T03:30:23.3505643Z   ✘  36 [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace (retry #1) (17.6s)
2026-05-16T03:30:25.9065738Z   ✓  37 [chromium] › test/e2e/login-contrast.e2e.test.ts:64:3 › LoginScene contrast › heading has ≥ 4.5:1 contrast ratio on #0A0E1A background (1.8s)
2026-05-16T03:30:27.6125807Z   ✓  38 [chromium] › test/e2e/login-contrast.e2e.test.ts:72:3 › LoginScene contrast › username label has ≥ 4.5:1 contrast ratio (1.7s)
2026-05-16T03:30:29.3687413Z   ✓  39 [chromium] › test/e2e/login-contrast.e2e.test.ts:78:3 › LoginScene contrast › password label has ≥ 4.5:1 contrast ratio (1.7s)
2026-05-16T03:30:30.9310132Z   ✓  40 [chromium] › test/e2e/login-contrast.e2e.test.ts:84:3 › LoginScene contrast › username input text has ≥ 4.5:1 contrast ratio (1.5s)
2026-05-16T03:30:32.5953923Z   ✓  41 [chromium] › test/e2e/login-contrast.e2e.test.ts:90:3 › LoginScene contrast › password input text has ≥ 4.5:1 contrast ratio (1.6s)
2026-05-16T03:30:34.3264731Z   ✓  42 [chromium] › test/e2e/login-contrast.e2e.test.ts:96:3 › LoginScene contrast › submit CTA button text has ≥ 4.5:1 contrast ratio (1.7s)
2026-05-16T03:30:36.0230537Z   ✓  43 [chromium] › test/e2e/login-contrast.e2e.test.ts:104:3 › LoginScene contrast › focused input border-color is accent #22D3EE (rgb 34,211,238) (1.7s)
2026-05-16T03:30:46.2733920Z   ✘  44 [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) (9.8s)
2026-05-16T03:30:59.0234420Z   ✘  45 [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) (retry #1) (11.5s)
2026-05-16T03:31:05.8925531Z   ✓  46 [chromium] › test/e2e/logout.e2e.test.ts:51:3 › Esc menu › canvas click opens menu (D-24 secondary trigger) (6.1s)
2026-05-16T03:31:12.1905415Z   ✓  47 [chromium] › test/e2e/logout.e2e.test.ts:69:3 › Esc menu › Resume closes menu and re-engages movement without navigating (6.3s)
2026-05-16T03:31:17.9864379Z   ✘  48 [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop (5.4s)
2026-05-16T03:31:37.1386068Z   ✘  49 [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop (retry #1) (18.2s)
2026-05-16T03:31:43.1741420Z   ✓  50 [chromium] › test/e2e/sprite-state.e2e.test.ts:48:3 › sprite-state machine (D-35) + nametag (D-27a) › nameplate DOM mirror is visible for self (count >= 1) (5.3s)
2026-05-16T03:31:48.3977575Z   ✓  51 [chromium] › test/e2e/sprite-state.e2e.test.ts:61:3 › sprite-state machine (D-35) + nametag (D-27a) › nameplate text content matches logged-in username (5.2s)
2026-05-16T03:31:57.1431395Z   ✓  52 [chromium] › test/e2e/ws-kill-reconnect.e2e.test.ts:16:1 › WS-kill: login → kill WS → SDK reconnects within grace → canvas still truthy + chat round-trips (8.7s)
2026-05-16T03:31:57.2020921Z 
2026-05-16T03:31:57.2031314Z 
2026-05-16T03:31:57.2050997Z   1) [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) 
2026-05-16T03:31:57.2070178Z 
2026-05-16T03:31:57.2070735Z     Error: Camera did not pan: before=(120,160) after=(120,160)
2026-05-16T03:31:57.2071388Z 
2026-05-16T03:31:57.2072324Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T03:31:57.2073363Z 
2026-05-16T03:31:57.2073768Z     Expected: >= [32m8[39m
2026-05-16T03:31:57.2074371Z     Received:    [31m0[39m
2026-05-16T03:31:57.2074770Z 
2026-05-16T03:31:57.2075028Z       80 |     cameraDelta,
2026-05-16T03:31:57.2076064Z       81 |     `Camera did not pan: before=(${before.scrollX},${before.scrollY}) after=(${after.scrollX},${after.scrollY})`,
2026-05-16T03:31:57.2077153Z     > 82 |   ).toBeGreaterThanOrEqual(8);
2026-05-16T03:31:57.2077729Z          |     ^
2026-05-16T03:31:57.2078186Z       83 |
2026-05-16T03:31:57.2078884Z       84 |   // 8. Secondary: player moved (position changed on at least one axis).
2026-05-16T03:31:57.2079918Z       85 |   const playerMoved = after.x !== before.x || after.y !== before.y;
2026-05-16T03:31:57.2081035Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/camera-follow.e2e.test.ts:82:5
2026-05-16T03:31:57.2082176Z 
2026-05-16T03:31:57.2083018Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2084789Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/test-failed-1.png
2026-05-16T03:31:57.2086451Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2087077Z 
2026-05-16T03:31:57.2087913Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2089245Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/video.webm
2026-05-16T03:31:57.2090696Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2091279Z 
2026-05-16T03:31:57.2093806Z     Error Context: test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/error-context.md
2026-05-16T03:31:57.2094789Z 
2026-05-16T03:31:57.2095669Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2096941Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/trace.zip
2026-05-16T03:31:57.2098309Z     Usage:
2026-05-16T03:31:57.2098592Z 
2026-05-16T03:31:57.2099522Z         pnpm exec playwright show-trace test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/trace.zip
2026-05-16T03:31:57.2100507Z 
2026-05-16T03:31:57.2101219Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2101792Z 
2026-05-16T03:31:57.2102502Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2104542Z 
2026-05-16T03:31:57.2106724Z     Error: Camera did not pan: before=(120,160) after=(120,160)
2026-05-16T03:31:57.2107296Z 
2026-05-16T03:31:57.2108188Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T03:31:57.2109040Z 
2026-05-16T03:31:57.2109412Z     Expected: >= [32m8[39m
2026-05-16T03:31:57.2110005Z     Received:    [31m0[39m
2026-05-16T03:31:57.2112064Z 
2026-05-16T03:31:57.2112416Z       80 |     cameraDelta,
2026-05-16T03:31:57.2114312Z       81 |     `Camera did not pan: before=(${before.scrollX},${before.scrollY}) after=(${after.scrollX},${after.scrollY})`,
2026-05-16T03:31:57.2116106Z     > 82 |   ).toBeGreaterThanOrEqual(8);
2026-05-16T03:31:57.2120884Z          |     ^
2026-05-16T03:31:57.2121222Z       83 |
2026-05-16T03:31:57.2121785Z       84 |   // 8. Secondary: player moved (position changed on at least one axis).
2026-05-16T03:31:57.2122676Z       85 |   const playerMoved = after.x !== before.x || after.y !== before.y;
2026-05-16T03:31:57.2124001Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/camera-follow.e2e.test.ts:82:5
2026-05-16T03:31:57.2124618Z 
2026-05-16T03:31:57.2125668Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2127051Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/test-failed-1.png
2026-05-16T03:31:57.2128545Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2129040Z 
2026-05-16T03:31:57.2129701Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2130983Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/video.webm
2026-05-16T03:31:57.2132363Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2132848Z 
2026-05-16T03:31:57.2133952Z     Error Context: test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/error-context.md
2026-05-16T03:31:57.2134901Z 
2026-05-16T03:31:57.2135605Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2136896Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/trace.zip
2026-05-16T03:31:57.2138080Z     Usage:
2026-05-16T03:31:57.2138265Z 
2026-05-16T03:31:57.2139228Z         pnpm exec playwright show-trace test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/trace.zip
2026-05-16T03:31:57.2140225Z 
2026-05-16T03:31:57.2140844Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2141341Z 
2026-05-16T03:31:57.2142467Z   2) [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) 
2026-05-16T03:31:57.2143643Z 
2026-05-16T03:31:57.2147067Z     Error: Expected ≥3 distinct frame keys during 1s hold; observed 1 (samples=0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000)
2026-05-16T03:31:57.2149997Z 
2026-05-16T03:31:57.2150822Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T03:31:57.2151470Z 
2026-05-16T03:31:57.2151682Z     Expected: >= [32m3[39m
2026-05-16T03:31:57.2152139Z     Received:    [31m1[39m
2026-05-16T03:31:57.2152388Z 
2026-05-16T03:31:57.2152540Z       67 |     unique.size,
2026-05-16T03:31:57.2153828Z       68 |     `Expected ≥3 distinct frame keys during 1s hold; observed ${unique.size} (samples=${samples.join(',')})`,
2026-05-16T03:31:57.2154741Z     > 69 |   ).toBeGreaterThanOrEqual(3);
2026-05-16T03:31:57.2155474Z          |     ^
2026-05-16T03:31:57.2155792Z       70 |
2026-05-16T03:31:57.2156341Z       71 |   // 4. Each observed frame must match a NaviRun* pattern (sanity).
2026-05-16T03:31:57.2157011Z       72 |   for (const f of unique) {
2026-05-16T03:31:57.2157801Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-anim.e2e.test.ts:69:5
2026-05-16T03:31:57.2158380Z 
2026-05-16T03:31:57.2159145Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2160437Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/test-failed-1.png
2026-05-16T03:31:57.2161753Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2162230Z 
2026-05-16T03:31:57.2162865Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2164259Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/video.webm
2026-05-16T03:31:57.2165599Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2166344Z 
2026-05-16T03:31:57.2167111Z     Error Context: test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/error-context.md
2026-05-16T03:31:57.2167932Z 
2026-05-16T03:31:57.2168659Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2169873Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-16T03:31:57.2170676Z     Usage:
2026-05-16T03:31:57.2170856Z 
2026-05-16T03:31:57.2171711Z         pnpm exec playwright show-trace test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-16T03:31:57.2172587Z 
2026-05-16T03:31:57.2173462Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2173973Z 
2026-05-16T03:31:57.2174582Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2175105Z 
2026-05-16T03:31:57.2178661Z     Error: Expected ≥3 distinct frame keys during 1s hold; observed 1 (samples=0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000)
2026-05-16T03:31:57.2181501Z 
2026-05-16T03:31:57.2182324Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T03:31:57.2182989Z 
2026-05-16T03:31:57.2183450Z     Expected: >= [32m3[39m
2026-05-16T03:31:57.2183920Z     Received:    [31m1[39m
2026-05-16T03:31:57.2184442Z 
2026-05-16T03:31:57.2184601Z       67 |     unique.size,
2026-05-16T03:31:57.2185683Z       68 |     `Expected ≥3 distinct frame keys during 1s hold; observed ${unique.size} (samples=${samples.join(',')})`,
2026-05-16T03:31:57.2186641Z     > 69 |   ).toBeGreaterThanOrEqual(3);
2026-05-16T03:31:57.2187093Z          |     ^
2026-05-16T03:31:57.2187416Z       70 |
2026-05-16T03:31:57.2187966Z       71 |   // 4. Each observed frame must match a NaviRun* pattern (sanity).
2026-05-16T03:31:57.2188634Z       72 |   for (const f of unique) {
2026-05-16T03:31:57.2189427Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-anim.e2e.test.ts:69:5
2026-05-16T03:31:57.2190001Z 
2026-05-16T03:31:57.2190722Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2191932Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/test-failed-1.png
2026-05-16T03:31:57.2193521Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2193985Z 
2026-05-16T03:31:57.2194626Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2196052Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/video.webm
2026-05-16T03:31:57.2197401Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2197871Z 
2026-05-16T03:31:57.2198682Z     Error Context: test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/error-context.md
2026-05-16T03:31:57.2199515Z 
2026-05-16T03:31:57.2200171Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2201427Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-16T03:31:57.2202308Z     Usage:
2026-05-16T03:31:57.2202493Z 
2026-05-16T03:31:57.2203651Z         pnpm exec playwright show-trace test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-16T03:31:57.2204640Z 
2026-05-16T03:31:57.2205248Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2205725Z 
2026-05-16T03:31:57.2206795Z   3) [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) 
2026-05-16T03:31:57.2207672Z 
2026-05-16T03:31:57.2208017Z     Error: Camera scrollX did not advance: before=120 after=120
2026-05-16T03:31:57.2208395Z 
2026-05-16T03:31:57.2209025Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T03:31:57.2209556Z 
2026-05-16T03:31:57.2209761Z     Expected: > [32m15[39m
2026-05-16T03:31:57.2210187Z     Received:   [31m0[39m
2026-05-16T03:31:57.2210699Z 
2026-05-16T03:31:57.2210971Z       83 |     (after as number) - (before as number),
2026-05-16T03:31:57.2211695Z       84 |     `Camera scrollX did not advance: before=${before} after=${after}`,
2026-05-16T03:31:57.2212395Z     > 85 |   ).toBeGreaterThan(15);
2026-05-16T03:31:57.2212809Z          |     ^
2026-05-16T03:31:57.2213348Z       86 | });
2026-05-16T03:31:57.2213675Z       87 |
2026-05-16T03:31:57.2214357Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-camera.e2e.test.ts:85:5
2026-05-16T03:31:57.2214946Z 
2026-05-16T03:31:57.2215674Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2216945Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/test-failed-1.png
2026-05-16T03:31:57.2218245Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2218703Z 
2026-05-16T03:31:57.2219406Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2220553Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/video.webm
2026-05-16T03:31:57.2222127Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2222600Z 
2026-05-16T03:31:57.2223583Z     Error Context: test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/error-context.md
2026-05-16T03:31:57.2224382Z 
2026-05-16T03:31:57.2225071Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2226230Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-16T03:31:57.2227001Z     Usage:
2026-05-16T03:31:57.2227186Z 
2026-05-16T03:31:57.2227988Z         pnpm exec playwright show-trace test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-16T03:31:57.2228918Z 
2026-05-16T03:31:57.2229557Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2230042Z 
2026-05-16T03:31:57.2230640Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2231119Z 
2026-05-16T03:31:57.2231437Z     Error: Camera scrollX did not advance: before=120 after=120
2026-05-16T03:31:57.2231833Z 
2026-05-16T03:31:57.2232484Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T03:31:57.2233061Z 
2026-05-16T03:31:57.2233512Z     Expected: > [32m15[39m
2026-05-16T03:31:57.2233976Z     Received:   [31m0[39m
2026-05-16T03:31:57.2234227Z 
2026-05-16T03:31:57.2234464Z       83 |     (after as number) - (before as number),
2026-05-16T03:31:57.2235168Z       84 |     `Camera scrollX did not advance: before=${before} after=${after}`,
2026-05-16T03:31:57.2236084Z     > 85 |   ).toBeGreaterThan(15);
2026-05-16T03:31:57.2236559Z          |     ^
2026-05-16T03:31:57.2236879Z       86 | });
2026-05-16T03:31:57.2237178Z       87 |
2026-05-16T03:31:57.2237858Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-camera.e2e.test.ts:85:5
2026-05-16T03:31:57.2238416Z 
2026-05-16T03:31:57.2239110Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2240363Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/test-failed-1.png
2026-05-16T03:31:57.2241701Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2242163Z 
2026-05-16T03:31:57.2242827Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2244168Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/video.webm
2026-05-16T03:31:57.2245448Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2245922Z 
2026-05-16T03:31:57.2246674Z     Error Context: test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/error-context.md
2026-05-16T03:31:57.2247757Z 
2026-05-16T03:31:57.2248400Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2249552Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-16T03:31:57.2250362Z     Usage:
2026-05-16T03:31:57.2250528Z 
2026-05-16T03:31:57.2251361Z         pnpm exec playwright show-trace test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-16T03:31:57.2252284Z 
2026-05-16T03:31:57.2252858Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2253478Z 
2026-05-16T03:31:57.2254513Z   4) [chromium] › test/e2e/cli-08-direction-convergence.spec.ts:70:1 › CLI-08 D-58c — dual-tab direction convergence (REQ-SRV-03 server-authoritative) 
2026-05-16T03:31:57.2255413Z 
2026-05-16T03:31:57.2255974Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T03:31:57.2256500Z 
2026-05-16T03:31:57.2256768Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-16T03:31:57.2257257Z     Expected: visible
2026-05-16T03:31:57.2257600Z     Timeout: 15000ms
2026-05-16T03:31:57.2257972Z     Error: element(s) not found
2026-05-16T03:31:57.2258232Z 
2026-05-16T03:31:57.2258353Z     Call log:
2026-05-16T03:31:57.2258882Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T03:31:57.2259662Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-16T03:31:57.2260087Z 
2026-05-16T03:31:57.2260096Z 
2026-05-16T03:31:57.2260242Z        at fixtures.ts:172
2026-05-16T03:31:57.2260647Z 
2026-05-16T03:31:57.2260775Z       170 |  */
2026-05-16T03:31:57.2261355Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-16T03:31:57.2262269Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-16T03:31:57.2263039Z           |                                                                ^
2026-05-16T03:31:57.2263781Z       173 |     timeout: 15_000,
2026-05-16T03:31:57.2264153Z       174 |   });
2026-05-16T03:31:57.2264455Z       175 | }
2026-05-16T03:31:57.2265163Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-16T03:31:57.2266330Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-direction-convergence.spec.ts:95:11
2026-05-16T03:31:57.2266963Z 
2026-05-16T03:31:57.2267633Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2268842Z     test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium/test-failed-1.png
2026-05-16T03:31:57.2270199Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2270847Z 
2026-05-16T03:31:57.2271489Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2272656Z     test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium/test-failed-2.png
2026-05-16T03:31:57.2274138Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2274605Z 
2026-05-16T03:31:57.2275371Z     Error Context: test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium/error-context.md
2026-05-16T03:31:57.2276176Z 
2026-05-16T03:31:57.2276830Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2277980Z     test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium/trace.zip
2026-05-16T03:31:57.2278815Z     Usage:
2026-05-16T03:31:57.2278983Z 
2026-05-16T03:31:57.2279828Z         pnpm exec playwright show-trace test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium/trace.zip
2026-05-16T03:31:57.2280743Z 
2026-05-16T03:31:57.2281327Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2281791Z 
2026-05-16T03:31:57.2282362Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2282833Z 
2026-05-16T03:31:57.2284197Z     Error: Test 1 — pageB firstRemoteDirection must be R (server-broadcast facing reaches remote viewer via PlayerState.facing → setRemoteFacing per Plan 06.4-10 Task 3).
2026-05-16T03:31:57.2285235Z 
2026-05-16T03:31:57.2285968Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m
2026-05-16T03:31:57.2286854Z 
2026-05-16T03:31:57.2287055Z     Expected: [32m"R"[39m
2026-05-16T03:31:57.2287474Z     Received: [31m"D"[39m
2026-05-16T03:31:57.2287698Z 
2026-05-16T03:31:57.2288162Z       122 |         'facing reaches remote viewer via PlayerState.facing → ' +
2026-05-16T03:31:57.2288909Z       123 |         'setRemoteFacing per Plan 06.4-10 Task 3).',
2026-05-16T03:31:57.2289409Z     > 124 |     ).toBe('R');
2026-05-16T03:31:57.2289769Z           |       ^
2026-05-16T03:31:57.2290076Z       125 |
2026-05-16T03:31:57.2290571Z       126 |     // 4. Test 2: continued idle preserves 'R' on both viewers.
2026-05-16T03:31:57.2291446Z       127 |     // deriveFacing's idle-preserve branch: Math.hypot(0,0) <= VELOCITY_THRESHOLD
2026-05-16T03:31:57.2292566Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-direction-convergence.spec.ts:124:7
2026-05-16T03:31:57.2293363Z 
2026-05-16T03:31:57.2294011Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2295312Z     test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium-retry1/test-failed-1.png
2026-05-16T03:31:57.2296693Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2297353Z 
2026-05-16T03:31:57.2297990Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2299257Z     test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium-retry1/test-failed-2.png
2026-05-16T03:31:57.2300629Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2301082Z 
2026-05-16T03:31:57.2301911Z     Error Context: test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium-retry1/error-context.md
2026-05-16T03:31:57.2302855Z 
2026-05-16T03:31:57.2303646Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2304893Z     test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium-retry1/trace.zip
2026-05-16T03:31:57.2305782Z     Usage:
2026-05-16T03:31:57.2305947Z 
2026-05-16T03:31:57.2306860Z         pnpm exec playwright show-trace test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium-retry1/trace.zip
2026-05-16T03:31:57.2307803Z 
2026-05-16T03:31:57.2308393Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2308858Z 
2026-05-16T03:31:57.2310098Z   5) [chromium] › test/e2e/cli-08-dup-login.e2e.test.ts:11:3 › D-51 dup-login eviction › second session evicts first; second tab reaches GameScene, first tab reaches LoginScene 
2026-05-16T03:31:57.2311121Z 
2026-05-16T03:31:57.2311698Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T03:31:57.2312222Z 
2026-05-16T03:31:57.2312596Z     Locator: locator('#username')
2026-05-16T03:31:57.2312996Z     Expected: visible
2026-05-16T03:31:57.2313551Z     Timeout: 15000ms
2026-05-16T03:31:57.2313931Z     Error: element(s) not found
2026-05-16T03:31:57.2314200Z 
2026-05-16T03:31:57.2314329Z     Call log:
2026-05-16T03:31:57.2314866Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T03:31:57.2315533Z     [2m  - waiting for locator('#username')[22m
2026-05-16T03:31:57.2315857Z 
2026-05-16T03:31:57.2315866Z 
2026-05-16T03:31:57.2316399Z       37 |       // SOURCE: GameScene.ts onForceReset transitions to LoginScene with an eviction banner.
2026-05-16T03:31:57.2317440Z       38 |       // The force_reset s2c event causes A1 to leave the room and start LoginScene.
2026-05-16T03:31:57.2318398Z     > 39 |       await expect(pageA1.locator('#username')).toBeVisible({ timeout: 15_000 });
2026-05-16T03:31:57.2319139Z          |                                                 ^
2026-05-16T03:31:57.2319583Z       40 |     } finally {
2026-05-16T03:31:57.2319997Z       41 |       await ctxA1.close();
2026-05-16T03:31:57.2320465Z       42 |       await ctxA2.close();
2026-05-16T03:31:57.2321247Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-dup-login.e2e.test.ts:39:49
2026-05-16T03:31:57.2322033Z 
2026-05-16T03:31:57.2322686Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2324036Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/test-failed-1.png
2026-05-16T03:31:57.2325335Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2325789Z 
2026-05-16T03:31:57.2326430Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2327598Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/test-failed-2.png
2026-05-16T03:31:57.2328874Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2329362Z 
2026-05-16T03:31:57.2330096Z     Error Context: test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/error-context.md
2026-05-16T03:31:57.2330910Z 
2026-05-16T03:31:57.2331555Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2332650Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/trace.zip
2026-05-16T03:31:57.2333584Z     Usage:
2026-05-16T03:31:57.2333775Z 
2026-05-16T03:31:57.2334603Z         pnpm exec playwright show-trace test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/trace.zip
2026-05-16T03:31:57.2335465Z 
2026-05-16T03:31:57.2336078Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2336552Z 
2026-05-16T03:31:57.2337138Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2337821Z 
2026-05-16T03:31:57.2338606Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T03:31:57.2339187Z 
2026-05-16T03:31:57.2339398Z     Locator: locator('#username')
2026-05-16T03:31:57.2339827Z     Expected: visible
2026-05-16T03:31:57.2340171Z     Timeout: 15000ms
2026-05-16T03:31:57.2340548Z     Error: element(s) not found
2026-05-16T03:31:57.2340794Z 
2026-05-16T03:31:57.2340924Z     Call log:
2026-05-16T03:31:57.2341467Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T03:31:57.2342133Z     [2m  - waiting for locator('#username')[22m
2026-05-16T03:31:57.2342470Z 
2026-05-16T03:31:57.2342479Z 
2026-05-16T03:31:57.2343017Z       37 |       // SOURCE: GameScene.ts onForceReset transitions to LoginScene with an eviction banner.
2026-05-16T03:31:57.2344462Z       38 |       // The force_reset s2c event causes A1 to leave the room and start LoginScene.
2026-05-16T03:31:57.2345481Z     > 39 |       await expect(pageA1.locator('#username')).toBeVisible({ timeout: 15_000 });
2026-05-16T03:31:57.2346219Z          |                                                 ^
2026-05-16T03:31:57.2346841Z       40 |     } finally {
2026-05-16T03:31:57.2347262Z       41 |       await ctxA1.close();
2026-05-16T03:31:57.2347733Z       42 |       await ctxA2.close();
2026-05-16T03:31:57.2348528Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-dup-login.e2e.test.ts:39:49
2026-05-16T03:31:57.2349340Z 
2026-05-16T03:31:57.2350025Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2351327Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/test-failed-1.png
2026-05-16T03:31:57.2352707Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2353301Z 
2026-05-16T03:31:57.2353969Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2355420Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/test-failed-2.png
2026-05-16T03:31:57.2356803Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2357219Z 
2026-05-16T03:31:57.2358027Z     Error Context: test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/error-context.md
2026-05-16T03:31:57.2358905Z 
2026-05-16T03:31:57.2359546Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2360672Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/trace.zip
2026-05-16T03:31:57.2361497Z     Usage:
2026-05-16T03:31:57.2361668Z 
2026-05-16T03:31:57.2362521Z         pnpm exec playwright show-trace test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/trace.zip
2026-05-16T03:31:57.2363867Z 
2026-05-16T03:31:57.2364495Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2364969Z 
2026-05-16T03:31:57.2365962Z   6) [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) 
2026-05-16T03:31:57.2366779Z 
2026-05-16T03:31:57.2371137Z     Error: D-41 regression: expected ≥3 distinct localFrame keys during 1s KeyD hold; observed 1 (samples=[0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000]). Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.
2026-05-16T03:31:57.2374847Z 
2026-05-16T03:31:57.2375597Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T03:31:57.2376494Z 
2026-05-16T03:31:57.2376741Z     Expected: >= [32m3[39m
2026-05-16T03:31:57.2377183Z     Received:    [31m1[39m
2026-05-16T03:31:57.2377419Z 
2026-05-16T03:31:57.2377841Z       83 |       `observed ${unique.size} (samples=[${samples.join(',')}]). ` +
2026-05-16T03:31:57.2379055Z       84 |       `Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.`,
2026-05-16T03:31:57.2379882Z     > 85 |   ).toBeGreaterThanOrEqual(3);
2026-05-16T03:31:57.2380272Z          |     ^
2026-05-16T03:31:57.2380557Z       86 |
2026-05-16T03:31:57.2381704Z       87 |   // 5. At least one observed frame key must contain 'Run' — confirms we left Stand state.
2026-05-16T03:31:57.2382632Z       88 |   const hasRunFrame = [...unique].some((f) => f.includes('Run'));
2026-05-16T03:31:57.2383771Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-local-anim.e2e.test.ts:85:5
2026-05-16T03:31:57.2384356Z 
2026-05-16T03:31:57.2385047Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2386248Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/test-failed-1.png
2026-05-16T03:31:57.2387501Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2387954Z 
2026-05-16T03:31:57.2388555Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2389631Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/video.webm
2026-05-16T03:31:57.2390797Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2391257Z 
2026-05-16T03:31:57.2392002Z     Error Context: test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/error-context.md
2026-05-16T03:31:57.2392776Z 
2026-05-16T03:31:57.2393580Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2394685Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/trace.zip
2026-05-16T03:31:57.2395442Z     Usage:
2026-05-16T03:31:57.2395612Z 
2026-05-16T03:31:57.2396400Z         pnpm exec playwright show-trace test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/trace.zip
2026-05-16T03:31:57.2397267Z 
2026-05-16T03:31:57.2397810Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2398256Z 
2026-05-16T03:31:57.2398812Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2399539Z 
2026-05-16T03:31:57.2404160Z     Error: D-41 regression: expected ≥3 distinct localFrame keys during 1s KeyD hold; observed 1 (samples=[0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000]). Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.
2026-05-16T03:31:57.2407699Z 
2026-05-16T03:31:57.2408433Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T03:31:57.2409076Z 
2026-05-16T03:31:57.2409279Z     Expected: >= [32m3[39m
2026-05-16T03:31:57.2409713Z     Received:    [31m1[39m
2026-05-16T03:31:57.2409958Z 
2026-05-16T03:31:57.2410311Z       83 |       `observed ${unique.size} (samples=[${samples.join(',')}]). ` +
2026-05-16T03:31:57.2411475Z       84 |       `Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.`,
2026-05-16T03:31:57.2412309Z     > 85 |   ).toBeGreaterThanOrEqual(3);
2026-05-16T03:31:57.2412720Z          |     ^
2026-05-16T03:31:57.2413008Z       86 |
2026-05-16T03:31:57.2413981Z       87 |   // 5. At least one observed frame key must contain 'Run' — confirms we left Stand state.
2026-05-16T03:31:57.2414895Z       88 |   const hasRunFrame = [...unique].some((f) => f.includes('Run'));
2026-05-16T03:31:57.2415850Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-local-anim.e2e.test.ts:85:5
2026-05-16T03:31:57.2416439Z 
2026-05-16T03:31:57.2417126Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2418400Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/test-failed-1.png
2026-05-16T03:31:57.2419773Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2420239Z 
2026-05-16T03:31:57.2420866Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2422055Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/video.webm
2026-05-16T03:31:57.2423472Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2423931Z 
2026-05-16T03:31:57.2424730Z     Error Context: test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/error-context.md
2026-05-16T03:31:57.2425569Z 
2026-05-16T03:31:57.2426220Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2427406Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/trace.zip
2026-05-16T03:31:57.2428474Z     Usage:
2026-05-16T03:31:57.2428648Z 
2026-05-16T03:31:57.2429531Z         pnpm exec playwright show-trace test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/trace.zip
2026-05-16T03:31:57.2430620Z 
2026-05-16T03:31:57.2431205Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2431674Z 
2026-05-16T03:31:57.2433019Z   7) [chromium] › test/e2e/cli-08-resume-render.spec.ts:30:1 › cli-08-resume-render — CLI-08 resume render — Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works 
2026-05-16T03:31:57.2434275Z 
2026-05-16T03:31:57.2435004Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoContain[2m([22m[32mexpected[39m[2m) // indexOf[22m
2026-05-16T03:31:57.2435637Z 
2026-05-16T03:31:57.2435890Z     Expected value: [32m"mvp"[39m
2026-05-16T03:31:57.2437004Z     Received array: [31m["atlas-mvp", "862faf78-9bfa-477f-9369-22b620938868", "2203aaff-8e79-41fd-abfd-49c7272960a4"][39m
2026-05-16T03:31:57.2437742Z 
2026-05-16T03:31:57.2437875Z       87 |   );
2026-05-16T03:31:57.2438466Z       88 |   // The 'mvp' atlas is loaded by BootScene on the cookie reload path (06-14).
2026-05-16T03:31:57.2439226Z     > 89 |   expect(loadedTextures).toContain('mvp');
2026-05-16T03:31:57.2439740Z          |                          ^
2026-05-16T03:31:57.2440126Z       90 |
2026-05-16T03:31:57.2440682Z       91 |   // 5. Chat round-trip: send a message and assert the chat line appears.
2026-05-16T03:31:57.2441386Z       92 |   await page.keyboard.press('Enter');
2026-05-16T03:31:57.2442230Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-resume-render.spec.ts:89:26
2026-05-16T03:31:57.2442832Z 
2026-05-16T03:31:57.2443640Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2444880Z     test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium/test-failed-1.png
2026-05-16T03:31:57.2446224Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2446691Z 
2026-05-16T03:31:57.2447343Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2448479Z     test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium/video.webm
2026-05-16T03:31:57.2449739Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2450196Z 
2026-05-16T03:31:57.2450959Z     Error Context: test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium/error-context.md
2026-05-16T03:31:57.2451770Z 
2026-05-16T03:31:57.2452418Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2453688Z     test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium/trace.zip
2026-05-16T03:31:57.2454680Z     Usage:
2026-05-16T03:31:57.2454851Z 
2026-05-16T03:31:57.2455682Z         pnpm exec playwright show-trace test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium/trace.zip
2026-05-16T03:31:57.2456725Z 
2026-05-16T03:31:57.2457310Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2457771Z 
2026-05-16T03:31:57.2458356Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2458820Z 
2026-05-16T03:31:57.2459392Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T03:31:57.2459918Z 
2026-05-16T03:31:57.2460188Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-16T03:31:57.2460679Z     Expected: visible
2026-05-16T03:31:57.2461017Z     Timeout: 15000ms
2026-05-16T03:31:57.2461397Z     Error: element(s) not found
2026-05-16T03:31:57.2461670Z 
2026-05-16T03:31:57.2461804Z     Call log:
2026-05-16T03:31:57.2462335Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T03:31:57.2463117Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-16T03:31:57.2463695Z 
2026-05-16T03:31:57.2463710Z 
2026-05-16T03:31:57.2463852Z        at fixtures.ts:172
2026-05-16T03:31:57.2464082Z 
2026-05-16T03:31:57.2464204Z       170 |  */
2026-05-16T03:31:57.2464785Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-16T03:31:57.2465705Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-16T03:31:57.2466482Z           |                                                                ^
2026-05-16T03:31:57.2467000Z       173 |     timeout: 15_000,
2026-05-16T03:31:57.2467370Z       174 |   });
2026-05-16T03:31:57.2467673Z       175 | }
2026-05-16T03:31:57.2468388Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-16T03:31:57.2469531Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-resume-render.spec.ts:37:9
2026-05-16T03:31:57.2470088Z 
2026-05-16T03:31:57.2470731Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2471994Z     test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium-retry1/test-failed-1.png
2026-05-16T03:31:57.2473617Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2474076Z 
2026-05-16T03:31:57.2474734Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2475996Z     test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium-retry1/video.webm
2026-05-16T03:31:57.2477549Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2478304Z 
2026-05-16T03:31:57.2479133Z     Error Context: test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium-retry1/error-context.md
2026-05-16T03:31:57.2480016Z 
2026-05-16T03:31:57.2480942Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2482273Z     test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium-retry1/trace.zip
2026-05-16T03:31:57.2483433Z     Usage:
2026-05-16T03:31:57.2483634Z 
2026-05-16T03:31:57.2484595Z         pnpm exec playwright show-trace test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium-retry1/trace.zip
2026-05-16T03:31:57.2485545Z 
2026-05-16T03:31:57.2486156Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2486625Z 
2026-05-16T03:31:57.2487916Z   8) [chromium] › test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:60:1 › CLI-08 D-55d — B joins after A: B sees A in Stand* (no TeleIn anim for pre-existing remote) 
2026-05-16T03:31:57.2488960Z 
2026-05-16T03:31:57.2490039Z     Error: Expected ≥3 firstRemoteFrame samples on B during 1s window (telemetry must publish — PlayerRenderer.onSimulationTickRemote at 30 Hz).
2026-05-16T03:31:57.2490971Z 
2026-05-16T03:31:57.2491703Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T03:31:57.2492359Z 
2026-05-16T03:31:57.2492553Z     Expected: >= [32m3[39m
2026-05-16T03:31:57.2493092Z     Received:    [31m2[39m
2026-05-16T03:31:57.2493595Z 
2026-05-16T03:31:57.2494208Z       106 |       'Expected ≥3 firstRemoteFrame samples on B during 1s window (telemetry ' +
2026-05-16T03:31:57.2495215Z       107 |         'must publish — PlayerRenderer.onSimulationTickRemote at 30 Hz).',
2026-05-16T03:31:57.2495867Z     > 108 |     ).toBeGreaterThanOrEqual(3);
2026-05-16T03:31:57.2496253Z           |       ^
2026-05-16T03:31:57.2496898Z       109 |     const teleInSamplesB = samplesB.filter((f) => TELEPORT_FRAME_REGEX.test(f));
2026-05-16T03:31:57.2497555Z       110 |     expect(
2026-05-16T03:31:57.2497917Z       111 |       teleInSamplesB,
2026-05-16T03:31:57.2498758Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:108:7
2026-05-16T03:31:57.2499442Z 
2026-05-16T03:31:57.2500159Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2501439Z     test-results/cli-08-snapshot-no-spawn-a-0d3d7-im-for-pre-existing-remote--chromium/test-failed-1.png
2026-05-16T03:31:57.2502889Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2503545Z 
2026-05-16T03:31:57.2504180Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2505353Z     test-results/cli-08-snapshot-no-spawn-a-0d3d7-im-for-pre-existing-remote--chromium/test-failed-2.png
2026-05-16T03:31:57.2506917Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2507356Z 
2026-05-16T03:31:57.2508118Z     Error Context: test-results/cli-08-snapshot-no-spawn-a-0d3d7-im-for-pre-existing-remote--chromium/error-context.md
2026-05-16T03:31:57.2509166Z 
2026-05-16T03:31:57.2509886Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2511034Z     test-results/cli-08-snapshot-no-spawn-a-0d3d7-im-for-pre-existing-remote--chromium/trace.zip
2026-05-16T03:31:57.2511822Z     Usage:
2026-05-16T03:31:57.2511994Z 
2026-05-16T03:31:57.2512801Z         pnpm exec playwright show-trace test-results/cli-08-snapshot-no-spawn-a-0d3d7-im-for-pre-existing-remote--chromium/trace.zip
2026-05-16T03:31:57.2513866Z 
2026-05-16T03:31:57.2514472Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2514963Z 
2026-05-16T03:31:57.2515530Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2515990Z 
2026-05-16T03:31:57.2516554Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T03:31:57.2517123Z 
2026-05-16T03:31:57.2517389Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-16T03:31:57.2517884Z     Expected: visible
2026-05-16T03:31:57.2518220Z     Timeout: 15000ms
2026-05-16T03:31:57.2518595Z     Error: element(s) not found
2026-05-16T03:31:57.2518850Z 
2026-05-16T03:31:57.2518975Z     Call log:
2026-05-16T03:31:57.2519513Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T03:31:57.2520299Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-16T03:31:57.2520727Z 
2026-05-16T03:31:57.2520737Z 
2026-05-16T03:31:57.2520886Z        at fixtures.ts:172
2026-05-16T03:31:57.2521115Z 
2026-05-16T03:31:57.2521240Z       170 |  */
2026-05-16T03:31:57.2521838Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-16T03:31:57.2522767Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-16T03:31:57.2523740Z           |                                                                ^
2026-05-16T03:31:57.2524273Z       173 |     timeout: 15_000,
2026-05-16T03:31:57.2524659Z       174 |   });
2026-05-16T03:31:57.2524985Z       175 | }
2026-05-16T03:31:57.2525746Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-16T03:31:57.2526976Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:91:11
2026-05-16T03:31:57.2527661Z 
2026-05-16T03:31:57.2528368Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2529667Z     test-results/cli-08-snapshot-no-spawn-a-0d3d7-im-for-pre-existing-remote--chromium-retry1/test-failed-1.png
2026-05-16T03:31:57.2531238Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2531700Z 
2026-05-16T03:31:57.2532334Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2533819Z     test-results/cli-08-snapshot-no-spawn-a-0d3d7-im-for-pre-existing-remote--chromium-retry1/test-failed-2.png
2026-05-16T03:31:57.2535172Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2535610Z 
2026-05-16T03:31:57.2536423Z     Error Context: test-results/cli-08-snapshot-no-spawn-a-0d3d7-im-for-pre-existing-remote--chromium-retry1/error-context.md
2026-05-16T03:31:57.2537269Z 
2026-05-16T03:31:57.2537919Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2539131Z     test-results/cli-08-snapshot-no-spawn-a-0d3d7-im-for-pre-existing-remote--chromium-retry1/trace.zip
2026-05-16T03:31:57.2540015Z     Usage:
2026-05-16T03:31:57.2540187Z 
2026-05-16T03:31:57.2541098Z         pnpm exec playwright show-trace test-results/cli-08-snapshot-no-spawn-a-0d3d7-im-for-pre-existing-remote--chromium-retry1/trace.zip
2026-05-16T03:31:57.2542236Z 
2026-05-16T03:31:57.2542779Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2543386Z 
2026-05-16T03:31:57.2544701Z   9) [chromium] › test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:138:1 › CLI-08 D-55d — A joined first: A DOES see TeleIn anim when B joins during session (gating preserves new-join semantics) 
2026-05-16T03:31:57.2545835Z 
2026-05-16T03:31:57.2547258Z     Error: Expected ≥3 firstRemoteFrame samples on A during 800 ms window (telemetry must publish — PlayerRenderer.startTeleportAnim onUpdate AND onSimulationTickRemote both write the field).
2026-05-16T03:31:57.2548394Z 
2026-05-16T03:31:57.2549091Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T03:31:57.2549743Z 
2026-05-16T03:31:57.2549956Z     Expected: >= [32m3[39m
2026-05-16T03:31:57.2550374Z     Received:    [31m2[39m
2026-05-16T03:31:57.2550630Z 
2026-05-16T03:31:57.2551252Z       186 |         '(telemetry must publish — PlayerRenderer.startTeleportAnim onUpdate ' +
2026-05-16T03:31:57.2552101Z       187 |         'AND onSimulationTickRemote both write the field).',
2026-05-16T03:31:57.2552715Z     > 188 |     ).toBeGreaterThanOrEqual(3);
2026-05-16T03:31:57.2553283Z           |       ^
2026-05-16T03:31:57.2553922Z       189 |     const teleInSamplesA = samplesA.filter((f) => TELEPORT_FRAME_REGEX.test(f));
2026-05-16T03:31:57.2554583Z       190 |     expect(
2026-05-16T03:31:57.2554983Z       191 |       teleInSamplesA.length,
2026-05-16T03:31:57.2555881Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:188:7
2026-05-16T03:31:57.2556550Z 
2026-05-16T03:31:57.2557389Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2558594Z     test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium/test-failed-1.png
2026-05-16T03:31:57.2559888Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2560365Z 
2026-05-16T03:31:57.2561053Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2562239Z     test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium/test-failed-2.png
2026-05-16T03:31:57.2563628Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2564075Z 
2026-05-16T03:31:57.2564819Z     Error Context: test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium/error-context.md
2026-05-16T03:31:57.2565665Z 
2026-05-16T03:31:57.2566338Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2567468Z     test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium/trace.zip
2026-05-16T03:31:57.2568507Z     Usage:
2026-05-16T03:31:57.2568684Z 
2026-05-16T03:31:57.2569481Z         pnpm exec playwright show-trace test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium/trace.zip
2026-05-16T03:31:57.2570387Z 
2026-05-16T03:31:57.2570957Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2571401Z 
2026-05-16T03:31:57.2571956Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2572401Z 
2026-05-16T03:31:57.2572962Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T03:31:57.2573623Z 
2026-05-16T03:31:57.2573894Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-16T03:31:57.2574408Z     Expected: visible
2026-05-16T03:31:57.2574767Z     Timeout: 15000ms
2026-05-16T03:31:57.2575179Z     Error: element(s) not found
2026-05-16T03:31:57.2575477Z 
2026-05-16T03:31:57.2575623Z     Call log:
2026-05-16T03:31:57.2576156Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T03:31:57.2576925Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-16T03:31:57.2577368Z 
2026-05-16T03:31:57.2577378Z 
2026-05-16T03:31:57.2577518Z        at fixtures.ts:172
2026-05-16T03:31:57.2577757Z 
2026-05-16T03:31:57.2577881Z       170 |  */
2026-05-16T03:31:57.2578450Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-16T03:31:57.2579358Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-16T03:31:57.2580133Z           |                                                                ^
2026-05-16T03:31:57.2580649Z       173 |     timeout: 15_000,
2026-05-16T03:31:57.2581208Z       174 |   });
2026-05-16T03:31:57.2581527Z       175 | }
2026-05-16T03:31:57.2582227Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-16T03:31:57.2583599Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:176:11
2026-05-16T03:31:57.2584265Z 
2026-05-16T03:31:57.2584920Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2586205Z     test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium-retry1/test-failed-1.png
2026-05-16T03:31:57.2587592Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2588040Z 
2026-05-16T03:31:57.2588668Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.2589910Z     test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium-retry1/test-failed-2.png
2026-05-16T03:31:57.2591339Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2591917Z 
2026-05-16T03:31:57.2592715Z     Error Context: test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium-retry1/error-context.md
2026-05-16T03:31:57.2593778Z 
2026-05-16T03:31:57.2594440Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.2595676Z     test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium-retry1/trace.zip
2026-05-16T03:31:57.2596546Z     Usage:
2026-05-16T03:31:57.2596711Z 
2026-05-16T03:31:57.2597641Z         pnpm exec playwright show-trace test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium-retry1/trace.zip
2026-05-16T03:31:57.2598592Z 
2026-05-16T03:31:57.2599187Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.2599668Z 
2026-05-16T03:31:57.8736422Z   10) [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) 
2026-05-16T03:31:57.8737527Z 
2026-05-16T03:31:57.8740830Z     Error: RoomRenderer.renderNew must emit floor tile sprites for mvp-room (D-40 verify-bail flip / Plan 06.1-05)
2026-05-16T03:31:57.8745594Z 
2026-05-16T03:31:57.8746658Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T03:31:57.8747808Z 
2026-05-16T03:31:57.8748297Z     Expected: > [32m0[39m
2026-05-16T03:31:57.8749256Z     Received:   [31m0[39m
2026-05-16T03:31:57.8749791Z 
2026-05-16T03:31:57.8750405Z     Call Log:
2026-05-16T03:31:57.8751177Z     - Timeout 15000ms exceeded while waiting on the predicate
2026-05-16T03:31:57.8752081Z 
2026-05-16T03:31:57.8752834Z       55 |   //    once RoomRenderer.renderNew (Plan 06.1-05) has placed at least one tile
2026-05-16T03:31:57.8754866Z       56 |   //    via group.add(). mvp-room ships 324 tiles, so any positive count clears.
2026-05-16T03:31:57.8755752Z     > 57 |   await expect
2026-05-16T03:31:57.8756617Z          |   ^
2026-05-16T03:31:57.8757217Z       58 |     .poll(
2026-05-16T03:31:57.8758051Z       59 |       async () =>
2026-05-16T03:31:57.8758765Z       60 |         page.evaluate(
2026-05-16T03:31:57.8760522Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-tiles.e2e.test.ts:57:3
2026-05-16T03:31:57.8761180Z 
2026-05-16T03:31:57.8763952Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.8765563Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/test-failed-1.png
2026-05-16T03:31:57.8767457Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8768202Z 
2026-05-16T03:31:57.8769433Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8770951Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/video.webm
2026-05-16T03:31:57.8773423Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8777239Z 
2026-05-16T03:31:57.8778027Z     Error Context: test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/error-context.md
2026-05-16T03:31:57.8778831Z 
2026-05-16T03:31:57.8779545Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.8780653Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-16T03:31:57.8781411Z     Usage:
2026-05-16T03:31:57.8781576Z 
2026-05-16T03:31:57.8782399Z         pnpm exec playwright show-trace test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-16T03:31:57.8783562Z 
2026-05-16T03:31:57.8784185Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8784692Z 
2026-05-16T03:31:57.8785298Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8785786Z 
2026-05-16T03:31:57.8786460Z     Error: RoomRenderer.renderNew must emit floor tile sprites for mvp-room (D-40 verify-bail flip / Plan 06.1-05)
2026-05-16T03:31:57.8787192Z 
2026-05-16T03:31:57.8787874Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T03:31:57.8788479Z 
2026-05-16T03:31:57.8788685Z     Expected: > [32m0[39m
2026-05-16T03:31:57.8789115Z     Received:   [31m0[39m
2026-05-16T03:31:57.8789342Z 
2026-05-16T03:31:57.8789474Z     Call Log:
2026-05-16T03:31:57.8789966Z     - Timeout 15000ms exceeded while waiting on the predicate
2026-05-16T03:31:57.8790595Z 
2026-05-16T03:31:57.8791046Z       55 |   //    once RoomRenderer.renderNew (Plan 06.1-05) has placed at least one tile
2026-05-16T03:31:57.8792004Z       56 |   //    via group.add(). mvp-room ships 324 tiles, so any positive count clears.
2026-05-16T03:31:57.8792664Z     > 57 |   await expect
2026-05-16T03:31:57.8793023Z          |   ^
2026-05-16T03:31:57.8793482Z       58 |     .poll(
2026-05-16T03:31:57.8793825Z       59 |       async () =>
2026-05-16T03:31:57.8794239Z       60 |         page.evaluate(
2026-05-16T03:31:57.8795001Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-tiles.e2e.test.ts:57:3
2026-05-16T03:31:57.8795582Z 
2026-05-16T03:31:57.8796277Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.8797588Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/test-failed-1.png
2026-05-16T03:31:57.8798971Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8799433Z 
2026-05-16T03:31:57.8800372Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8801859Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/video.webm
2026-05-16T03:31:57.8803552Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8804031Z 
2026-05-16T03:31:57.8804872Z     Error Context: test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/error-context.md
2026-05-16T03:31:57.8805692Z 
2026-05-16T03:31:57.8806375Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.8807604Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-16T03:31:57.8808445Z     Usage:
2026-05-16T03:31:57.8808657Z 
2026-05-16T03:31:57.8809542Z         pnpm exec playwright show-trace test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-16T03:31:57.8810455Z 
2026-05-16T03:31:57.8811103Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8811582Z 
2026-05-16T03:31:57.8812902Z   11) [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace 
2026-05-16T03:31:57.8813892Z 
2026-05-16T03:31:57.8814666Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T03:31:57.8815569Z 
2026-05-16T03:31:57.8816104Z     Expected: > [32m470[39m
2026-05-16T03:31:57.8816579Z     Received:   [31m440[39m
2026-05-16T03:31:57.8816816Z 
2026-05-16T03:31:57.8817051Z       78 |       .getAttribute('data-x-coord');
2026-05-16T03:31:57.8817623Z       79 |     const afterX = Number(afterXStr ?? '0');
2026-05-16T03:31:57.8818843Z     > 80 |     expect(afterX).toBeGreaterThan(beforeX + 30); // ≥30 px movement; conservative.
2026-05-16T03:31:57.8819589Z          |                    ^
2026-05-16T03:31:57.8820219Z       81 |
2026-05-16T03:31:57.8820831Z       82 |     // (4) Chat round-trip. A presses Enter to focus chat, types, Enter to send.
2026-05-16T03:31:57.8821778Z       83 |     //     B sees a `.chat-line` matching `<sender>: <text>` within 5s.
2026-05-16T03:31:57.8822671Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08.e2e.test.ts:80:20
2026-05-16T03:31:57.8823386Z 
2026-05-16T03:31:57.8824118Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.8825374Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/test-failed-1.png
2026-05-16T03:31:57.8826732Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8827217Z 
2026-05-16T03:31:57.8827880Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.8830381Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/test-failed-2.png
2026-05-16T03:31:57.8833430Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8834112Z 
2026-05-16T03:31:57.8834905Z     Error Context: test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/error-context.md
2026-05-16T03:31:57.8835925Z 
2026-05-16T03:31:57.8836667Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.8837843Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/trace.zip
2026-05-16T03:31:57.8838662Z     Usage:
2026-05-16T03:31:57.8838857Z 
2026-05-16T03:31:57.8839925Z         pnpm exec playwright show-trace test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/trace.zip
2026-05-16T03:31:57.8841073Z 
2026-05-16T03:31:57.8841731Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8842242Z 
2026-05-16T03:31:57.8842833Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8843490Z 
2026-05-16T03:31:57.8844224Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T03:31:57.8844846Z 
2026-05-16T03:31:57.8845075Z     Expected: > [32m470[39m
2026-05-16T03:31:57.8845746Z     Received:   [31m440[39m
2026-05-16T03:31:57.8846006Z 
2026-05-16T03:31:57.8846242Z       78 |       .getAttribute('data-x-coord');
2026-05-16T03:31:57.8846811Z       79 |     const afterX = Number(afterXStr ?? '0');
2026-05-16T03:31:57.8848007Z     > 80 |     expect(afterX).toBeGreaterThan(beforeX + 30); // ≥30 px movement; conservative.
2026-05-16T03:31:57.8848980Z          |                    ^
2026-05-16T03:31:57.8849348Z       81 |
2026-05-16T03:31:57.8849952Z       82 |     // (4) Chat round-trip. A presses Enter to focus chat, types, Enter to send.
2026-05-16T03:31:57.8851059Z       83 |     //     B sees a `.chat-line` matching `<sender>: <text>` within 5s.
2026-05-16T03:31:57.8851942Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08.e2e.test.ts:80:20
2026-05-16T03:31:57.8852483Z 
2026-05-16T03:31:57.8853368Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.8854669Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/test-failed-1.png
2026-05-16T03:31:57.8856354Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8856841Z 
2026-05-16T03:31:57.8857487Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.8858845Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/test-failed-2.png
2026-05-16T03:31:57.8860236Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8860941Z 
2026-05-16T03:31:57.8861751Z     Error Context: test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/error-context.md
2026-05-16T03:31:57.8862983Z 
2026-05-16T03:31:57.8863924Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.8865163Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/trace.zip
2026-05-16T03:31:57.8866043Z     Usage:
2026-05-16T03:31:57.8866228Z 
2026-05-16T03:31:57.8867112Z         pnpm exec playwright show-trace test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/trace.zip
2026-05-16T03:31:57.8868086Z 
2026-05-16T03:31:57.8868739Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8869227Z 
2026-05-16T03:31:57.8870255Z   12) [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) 
2026-05-16T03:31:57.8871107Z 
2026-05-16T03:31:57.8871730Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T03:31:57.8872285Z 
2026-05-16T03:31:57.8872651Z     Locator: locator('form#login-form, #login-form, #username')
2026-05-16T03:31:57.8873426Z     Expected: visible
2026-05-16T03:31:57.8873795Z     Timeout: 5000ms
2026-05-16T03:31:57.8874181Z     Error: element(s) not found
2026-05-16T03:31:57.8874434Z 
2026-05-16T03:31:57.8874573Z     Call log:
2026-05-16T03:31:57.8875145Z     [2m  - Expect "toBeVisible" with timeout 5000ms[22m
2026-05-16T03:31:57.8876027Z     [2m  - waiting for locator('form#login-form, #login-form, #username')[22m
2026-05-16T03:31:57.8876810Z 
2026-05-16T03:31:57.8876828Z 
2026-05-16T03:31:57.8876960Z       36 |
2026-05-16T03:31:57.8877523Z       37 |     // Should navigate back to LoginScene (login form heading visible)
2026-05-16T03:31:57.8878529Z     > 38 |     await expect(page.locator('form#login-form, #login-form, #username')).toBeVisible({
2026-05-16T03:31:57.8879418Z          |                                                                           ^
2026-05-16T03:31:57.8879986Z       39 |       timeout: 5_000,
2026-05-16T03:31:57.8880401Z       40 |     });
2026-05-16T03:31:57.8880715Z       41 |
2026-05-16T03:31:57.8881346Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/logout.e2e.test.ts:38:75
2026-05-16T03:31:57.8882174Z 
2026-05-16T03:31:57.8882911Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.8884327Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/test-failed-1.png
2026-05-16T03:31:57.8885749Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8886525Z 
2026-05-16T03:31:57.8887501Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8888702Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/video.webm
2026-05-16T03:31:57.8890049Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8890526Z 
2026-05-16T03:31:57.8891314Z     Error Context: test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/error-context.md
2026-05-16T03:31:57.8892154Z 
2026-05-16T03:31:57.8892834Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.8894275Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/trace.zip
2026-05-16T03:31:57.8895150Z     Usage:
2026-05-16T03:31:57.8895334Z 
2026-05-16T03:31:57.8896181Z         pnpm exec playwright show-trace test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/trace.zip
2026-05-16T03:31:57.8897138Z 
2026-05-16T03:31:57.8897791Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8898270Z 
2026-05-16T03:31:57.8898893Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8899375Z 
2026-05-16T03:31:57.8899968Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T03:31:57.8900554Z 
2026-05-16T03:31:57.8900896Z     Locator: locator('form#login-form, #login-form, #username')
2026-05-16T03:31:57.8901478Z     Expected: visible
2026-05-16T03:31:57.8901855Z     Timeout: 5000ms
2026-05-16T03:31:57.8902252Z     Error: element(s) not found
2026-05-16T03:31:57.8902784Z 
2026-05-16T03:31:57.8902923Z     Call log:
2026-05-16T03:31:57.8903750Z     [2m  - Expect "toBeVisible" with timeout 5000ms[22m
2026-05-16T03:31:57.8904630Z     [2m  - waiting for locator('form#login-form, #login-form, #username')[22m
2026-05-16T03:31:57.8905161Z 
2026-05-16T03:31:57.8905173Z 
2026-05-16T03:31:57.8905319Z       36 |
2026-05-16T03:31:57.8905882Z       37 |     // Should navigate back to LoginScene (login form heading visible)
2026-05-16T03:31:57.8906870Z     > 38 |     await expect(page.locator('form#login-form, #login-form, #username')).toBeVisible({
2026-05-16T03:31:57.8907730Z          |                                                                           ^
2026-05-16T03:31:57.8908308Z       39 |       timeout: 5_000,
2026-05-16T03:31:57.8908709Z       40 |     });
2026-05-16T03:31:57.8909036Z       41 |
2026-05-16T03:31:57.8909674Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/logout.e2e.test.ts:38:75
2026-05-16T03:31:57.8910231Z 
2026-05-16T03:31:57.8911000Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.8912344Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/test-failed-1.png
2026-05-16T03:31:57.8914313Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8914812Z 
2026-05-16T03:31:57.8915470Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8916739Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/video.webm
2026-05-16T03:31:57.8918178Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8918658Z 
2026-05-16T03:31:57.8919509Z     Error Context: test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/error-context.md
2026-05-16T03:31:57.8937191Z 
2026-05-16T03:31:57.8937977Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.8939299Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/trace.zip
2026-05-16T03:31:57.8940269Z     Usage:
2026-05-16T03:31:57.8940434Z 
2026-05-16T03:31:57.8941430Z         pnpm exec playwright show-trace test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/trace.zip
2026-05-16T03:31:57.8942431Z 
2026-05-16T03:31:57.8943086Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8943881Z 
2026-05-16T03:31:57.8945284Z   13) [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop 
2026-05-16T03:31:57.8946434Z 
2026-05-16T03:31:57.8947086Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoMatch[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T03:31:57.8947966Z 
2026-05-16T03:31:57.8948344Z     Expected pattern: [32m/^0028-NaviRunR_\d{3}$/[39m
2026-05-16T03:31:57.8949085Z     Received string:  [31m"0000-NaviStandD_000"[39m
2026-05-16T03:31:57.8949453Z 
2026-05-16T03:31:57.8949611Z       32 |
2026-05-16T03:31:57.8950126Z       33 |     // Frame key must match Run R pattern: '0028-NaviRunR_NNN'
2026-05-16T03:31:57.8950898Z     > 34 |     expect(frameWhileRunning).toMatch(/^0028-NaviRunR_\d{3}$/);
2026-05-16T03:31:57.8951570Z          |                               ^
2026-05-16T03:31:57.8951983Z       35 |
2026-05-16T03:31:57.8952403Z       36 |     // Release right arrow and wait for stop
2026-05-16T03:31:57.8953008Z       37 |     await page.keyboard.up('ArrowRight');
2026-05-16T03:31:57.8954046Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/sprite-state.e2e.test.ts:34:31
2026-05-16T03:31:57.8954648Z 
2026-05-16T03:31:57.8955368Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.8956700Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/test-failed-1.png
2026-05-16T03:31:57.8958323Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8958845Z 
2026-05-16T03:31:57.8959502Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8960668Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/video.webm
2026-05-16T03:31:57.8962018Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8962527Z 
2026-05-16T03:31:57.8963478Z     Error Context: test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/error-context.md
2026-05-16T03:31:57.8964355Z 
2026-05-16T03:31:57.8965057Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.8966310Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/trace.zip
2026-05-16T03:31:57.8967172Z     Usage:
2026-05-16T03:31:57.8967329Z 
2026-05-16T03:31:57.8968202Z         pnpm exec playwright show-trace test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/trace.zip
2026-05-16T03:31:57.8969123Z 
2026-05-16T03:31:57.8969714Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8970214Z 
2026-05-16T03:31:57.8970812Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8971266Z 
2026-05-16T03:31:57.8971860Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T03:31:57.8972352Z 
2026-05-16T03:31:57.8972673Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-16T03:31:57.8973639Z     Expected: visible
2026-05-16T03:31:57.8974025Z     Timeout: 15000ms
2026-05-16T03:31:57.8974442Z     Error: element(s) not found
2026-05-16T03:31:57.8974721Z 
2026-05-16T03:31:57.8974847Z     Call log:
2026-05-16T03:31:57.8975426Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T03:31:57.8976265Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-16T03:31:57.8976706Z 
2026-05-16T03:31:57.8976715Z 
2026-05-16T03:31:57.8976887Z        at fixtures.ts:172
2026-05-16T03:31:57.8977122Z 
2026-05-16T03:31:57.8977243Z       170 |  */
2026-05-16T03:31:57.8977854Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-16T03:31:57.8978846Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-16T03:31:57.8979679Z           |                                                                ^
2026-05-16T03:31:57.8980228Z       173 |     timeout: 15_000,
2026-05-16T03:31:57.8980633Z       174 |   });
2026-05-16T03:31:57.8980976Z       175 | }
2026-05-16T03:31:57.8981692Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-16T03:31:57.8983055Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/sprite-state.e2e.test.ts:22:11
2026-05-16T03:31:57.8983828Z 
2026-05-16T03:31:57.8984532Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.8985937Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/test-failed-1.png
2026-05-16T03:31:57.8987341Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8987793Z 
2026-05-16T03:31:57.8988424Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8989923Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/video.webm
2026-05-16T03:31:57.8991261Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.8991702Z 
2026-05-16T03:31:57.8995211Z     Error Context: test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/error-context.md
2026-05-16T03:31:57.8996185Z 
2026-05-16T03:31:57.8996892Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.8998083Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/trace.zip
2026-05-16T03:31:57.8998915Z     Usage:
2026-05-16T03:31:57.8999079Z 
2026-05-16T03:31:57.8999934Z         pnpm exec playwright show-trace test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/trace.zip
2026-05-16T03:31:57.9000818Z 
2026-05-16T03:31:57.9001361Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.9002020Z 
2026-05-16T03:31:57.9002879Z   14) [chromium] › test/e2e/cli-08-collision-boundary.spec.ts:132:3 › derived collision_polys block north wall (D-62 anti-revert) 
2026-05-16T03:31:57.9003854Z 
2026-05-16T03:31:57.9004545Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T03:31:57.9005227Z 
2026-05-16T03:31:57.9005493Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-16T03:31:57.9005959Z     Expected: visible
2026-05-16T03:31:57.9006282Z     Timeout: 15000ms
2026-05-16T03:31:57.9006640Z     Error: element(s) not found
2026-05-16T03:31:57.9006898Z 
2026-05-16T03:31:57.9007014Z     Call log:
2026-05-16T03:31:57.9007508Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T03:31:57.9008236Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-16T03:31:57.9008637Z 
2026-05-16T03:31:57.9008646Z 
2026-05-16T03:31:57.9008777Z        at fixtures.ts:172
2026-05-16T03:31:57.9008997Z 
2026-05-16T03:31:57.9009129Z       170 |  */
2026-05-16T03:31:57.9009679Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-16T03:31:57.9010546Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-16T03:31:57.9011517Z           |                                                                ^
2026-05-16T03:31:57.9012077Z       173 |     timeout: 15_000,
2026-05-16T03:31:57.9012479Z       174 |   });
2026-05-16T03:31:57.9012803Z       175 | }
2026-05-16T03:31:57.9013839Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-16T03:31:57.9015070Z         at loginAndAssertTiles (/home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-collision-boundary.spec.ts:38:9)
2026-05-16T03:31:57.9016345Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-collision-boundary.spec.ts:137:5
2026-05-16T03:31:57.9016933Z 
2026-05-16T03:31:57.9017623Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.9018822Z     test-results/cli-08-collision-boundary--88271-orth-wall-D-62-anti-revert--chromium/test-failed-1.png
2026-05-16T03:31:57.9020047Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.9020465Z 
2026-05-16T03:31:57.9021031Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.9022044Z     test-results/cli-08-collision-boundary--88271-orth-wall-D-62-anti-revert--chromium/video.webm
2026-05-16T03:31:57.9023669Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.9024116Z 
2026-05-16T03:31:57.9024840Z     Error Context: test-results/cli-08-collision-boundary--88271-orth-wall-D-62-anti-revert--chromium/error-context.md
2026-05-16T03:31:57.9025589Z 
2026-05-16T03:31:57.9026221Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.9027327Z     test-results/cli-08-collision-boundary--88271-orth-wall-D-62-anti-revert--chromium/trace.zip
2026-05-16T03:31:57.9028123Z     Usage:
2026-05-16T03:31:57.9028287Z 
2026-05-16T03:31:57.9029081Z         pnpm exec playwright show-trace test-results/cli-08-collision-boundary--88271-orth-wall-D-62-anti-revert--chromium/trace.zip
2026-05-16T03:31:57.9029891Z 
2026-05-16T03:31:57.9030453Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.9030889Z 
2026-05-16T03:31:57.9031610Z   15) [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block east wall 
2026-05-16T03:31:57.9032250Z 
2026-05-16T03:31:57.9032800Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T03:31:57.9033593Z 
2026-05-16T03:31:57.9033847Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-16T03:31:57.9034566Z     Expected: visible
2026-05-16T03:31:57.9034902Z     Timeout: 15000ms
2026-05-16T03:31:57.9035271Z     Error: element(s) not found
2026-05-16T03:31:57.9035519Z 
2026-05-16T03:31:57.9035852Z     Call log:
2026-05-16T03:31:57.9036399Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T03:31:57.9037162Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-16T03:31:57.9037627Z 
2026-05-16T03:31:57.9037638Z 
2026-05-16T03:31:57.9037792Z        at fixtures.ts:172
2026-05-16T03:31:57.9038022Z 
2026-05-16T03:31:57.9038153Z       170 |  */
2026-05-16T03:31:57.9038768Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-16T03:31:57.9039703Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-16T03:31:57.9040478Z           |                                                                ^
2026-05-16T03:31:57.9040975Z       173 |     timeout: 15_000,
2026-05-16T03:31:57.9041364Z       174 |   });
2026-05-16T03:31:57.9041645Z       175 | }
2026-05-16T03:31:57.9042325Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-16T03:31:57.9043730Z         at loginAndAssertTiles (/home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:24:9)
2026-05-16T03:31:57.9044957Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:119:5
2026-05-16T03:31:57.9045526Z 
2026-05-16T03:31:57.9046150Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T03:31:57.9047272Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/test-failed-1.png
2026-05-16T03:31:57.9048439Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.9048842Z 
2026-05-16T03:31:57.9049393Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T03:31:57.9050434Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/video.webm
2026-05-16T03:31:57.9051538Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.9051966Z 
2026-05-16T03:31:57.9052664Z     Error Context: test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/error-context.md
2026-05-16T03:31:57.9053645Z 
2026-05-16T03:31:57.9054234Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T03:31:57.9055274Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/trace.zip
2026-05-16T03:31:57.9055993Z     Usage:
2026-05-16T03:31:57.9056152Z 
2026-05-16T03:31:57.9056904Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/trace.zip
2026-05-16T03:31:57.9057987Z 
2026-05-16T03:31:57.9058504Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T03:31:57.9058916Z 
2026-05-16T03:31:57.9059027Z   13 failed
2026-05-16T03:31:57.9060223Z     [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) 
2026-05-16T03:31:57.9062131Z     [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) 
2026-05-16T03:31:57.9064238Z     [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) 
2026-05-16T03:31:57.9066151Z     [chromium] › test/e2e/cli-08-direction-convergence.spec.ts:70:1 › CLI-08 D-58c — dual-tab direction convergence (REQ-SRV-03 server-authoritative) 
2026-05-16T03:31:57.9068290Z     [chromium] › test/e2e/cli-08-dup-login.e2e.test.ts:11:3 › D-51 dup-login eviction › second session evicts first; second tab reaches GameScene, first tab reaches LoginScene 
2026-05-16T03:31:57.9070316Z     [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) 
2026-05-16T03:31:57.9072461Z     [chromium] › test/e2e/cli-08-resume-render.spec.ts:30:1 › cli-08-resume-render — CLI-08 resume render — Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works 
2026-05-16T03:31:57.9074835Z     [chromium] › test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:60:1 › CLI-08 D-55d — B joins after A: B sees A in Stand* (no TeleIn anim for pre-existing remote) 
2026-05-16T03:31:57.9077104Z     [chromium] › test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:138:1 › CLI-08 D-55d — A joined first: A DOES see TeleIn anim when B joins during session (gating preserves new-join semantics) 
2026-05-16T03:31:57.9079097Z     [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) 
2026-05-16T03:31:57.9080886Z     [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace 
2026-05-16T03:31:57.9082604Z     [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) 
2026-05-16T03:31:57.9084701Z     [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop 
2026-05-16T03:31:57.9085790Z   2 flaky
2026-05-16T03:31:57.9086751Z     [chromium] › test/e2e/cli-08-collision-boundary.spec.ts:132:3 › derived collision_polys block north wall (D-62 anti-revert) 
2026-05-16T03:31:57.9088118Z     [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block east wall 
2026-05-16T03:31:57.9088859Z   22 passed (12.5m)
2026-05-16T03:31:57.9266888Z /home/runner/work/rebno/rebno/apps/client:
2026-05-16T03:31:57.9272280Z  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  @rebno/client@0.1.0 test:e2e: `playwright test`
2026-05-16T03:31:57.9273001Z Exit status 1
2026-05-16T03:31:57.9472352Z ##[error]Process completed with exit code 1.
